package com.mdd.admin.validate.coupon;

import com.mdd.common.validator.annotation.IDMust;
import com.mdd.common.validator.annotation.IntegerContains;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class CouponValidate implements Serializable {
    private static final long serialVersionUID = 1L;
    public interface create{}
    public interface update{}
    public interface delete{}

    @IDMust(message = "id参数必传且大于0", groups = {update.class, delete.class})
    private Integer id;
    private String name;                // 优惠券名称
    private String content;             // 内容
    private Integer type;              // 优惠券类型  待使用
    @NotNull(message = "优惠金额不能为空", groups = {create.class, update.class})
    private BigDecimal amount;          // 优惠多少金额
    private BigDecimal metAmount;       // 满减金额   -- 不适用
    private Integer promotionMethod;     // 发放方式， 有系统发放、用户手动领取
    private Integer number;             // 设置优惠券发放多少张
    private Integer conditions;        // 使用条件  例如： 需要大于100元才能使用， 或满足多少使用, 没使用
    private Integer useRange;         // 设置优惠券使用的范围， 设置了范围使用，则service为空
    private List<Integer> service;       // 设置哪些服务可以使用
    private Integer claim;      // 领取次数
    private Integer claimCount;   // 领取数量
    private Integer useTime;      // 使用时间方式， 0 判断优惠券开始和结束时间是否为空， 1 判断使用天数是否大于0，计算当前时间到useDay的时间有效， 2 将当前时间+1天，在计算到useDay的有效时间
    private Integer useDay;      // 使用天数
    private String startTime;   // 优惠券开始时间
    private String endTime;  // 优惠券结束时间
    private Integer shareType;  // 分享类型  0-不分享   1-二维码分享   2-兑换码分享    3-二维码生成一张优惠券
    private String imageAddress; // 图片地址
    private Integer isSuperimposing;// 是否叠加   0-不叠加使用  1-叠加使用
}
